//
//  ShowMessage.m
//  demo
//
//  Created by 付亚杰 on 16/5/16.
//  Copyright © 2016年 HQcoder. All rights reserved.
//

#import "ShowMessage.h"
#import "NSString+Size.h"

@interface ShowMessage(){
    BOOL isLoading;
}

@property (nonatomic, strong) UIView *loadView;
@property (nonatomic, strong) UILabel *loadLabel;

@end

static ShowMessage *showMessage;

@implementation ShowMessage

+ (instancetype)sharedShowMessage{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        showMessage = [[ShowMessage alloc] init];
    });
    return showMessage;
}

- (UIView *)loadView{
    if (_loadView == nil) {
        
        _loadView = [[UIView alloc] init];
        _loadView.backgroundColor = [UIColor blackColor];
        _loadView.frame = CGRectMake(1, 1, 1, 1);
        _loadView.alpha = 1.0f;
        _loadView.layer.cornerRadius = 5.0f;
        _loadView.layer.masksToBounds = YES;
        
        [_loadView addSubview:self.loadLabel];
    }
    return _loadView;
}

- (UILabel *)loadLabel{
    if (_loadLabel == nil) {
//
        _loadLabel.textColor = [UIColor whiteColor];
        _loadLabel.textAlignment = 1;
        _loadLabel.backgroundColor = [UIColor clearColor];
        _loadLabel.font = [UIFont boldSystemFontOfSize:14];
    }
    return _loadLabel;
}

+ (void)showCenterViewMessage:(NSString *)message
{
    UIWindow * window = [UIApplication sharedApplication].keyWindow;
    UIView *showview =  [[UIView alloc]init];
    showview.backgroundColor = [UIColor blackColor];
    showview.frame = CGRectMake(1, 1, 1, 1);
    showview.alpha = 1.0f;
    showview.layer.cornerRadius = 5.0f;
    showview.layer.masksToBounds = YES;
    [window addSubview:showview];
    
    CGFloat SCREEN_WIDTH = [UIScreen mainScreen].bounds.size.width;
    CGFloat SCREEN_HEIGHT = [UIScreen mainScreen].bounds.size.height;
    
    UILabel *label = [[UILabel alloc]init];
    
    //    boundingRectWithSize:options:attributes:context
    CGSize LabelSize = [message boundingRectWithSize:CGSizeMake(290, 9000) withFont:18];
    
    label.frame = CGRectMake(10, 5, LabelSize.width, LabelSize.height);
    label.text = message;
    label.textColor = [UIColor whiteColor];
    label.textAlignment = 1;
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:16];
    [showview addSubview:label];
    showview.frame = CGRectMake((SCREEN_WIDTH - LabelSize.width - 20)/2, SCREEN_HEIGHT - 100, LabelSize.width+20, LabelSize.height+10);
    
    showview.center = CGPointMake(SCREEN_WIDTH * 0.5, SCREEN_HEIGHT * 0.5);
    [UIView animateWithDuration:2 animations:^{
        showview.alpha = 0;
    } completion:^(BOOL finished) {
        [showview removeFromSuperview];
    }];
}


+ (void)showMessage:(NSString *)message
{
    UIWindow * window = [UIApplication sharedApplication].keyWindow;
    UIView *showview =  [[UIView alloc]init];
    showview.backgroundColor = [UIColor blackColor];
    showview.frame = CGRectMake(1, 1, 1, 1);
    showview.alpha = 1.0f;
    showview.layer.cornerRadius = 5.0f;
    showview.layer.masksToBounds = YES;
    [window addSubview:showview];
    
    CGFloat SCREEN_WIDTH = [UIScreen mainScreen].bounds.size.width;
    CGFloat SCREEN_HEIGHT = [UIScreen mainScreen].bounds.size.height;
    
    UILabel *label = [[UILabel alloc]init];
    
    //    boundingRectWithSize:options:attributes:context
    CGSize LabelSize = [message boundingRectWithSize:CGSizeMake(290, 9000) withFont:16];
    
    label.frame = CGRectMake(10, 5, LabelSize.width, LabelSize.height);
    label.text = message;
    label.textColor = [UIColor whiteColor];
    label.textAlignment = 1;
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:14];
    [showview addSubview:label];
    showview.frame = CGRectMake((SCREEN_WIDTH - LabelSize.width - 20)/2, SCREEN_HEIGHT - 100, LabelSize.width+20, LabelSize.height+10);
    [UIView animateWithDuration:2 animations:^{
        showview.alpha = 0;
    } completion:^(BOOL finished) {
        [showview removeFromSuperview];
    }];
}

- (void)showLoadingMessage:(NSString *)message
{
    
    isLoading = YES;
    message = [NSString stringWithFormat:@"%@...",message];
    UIWindow * window = [UIApplication sharedApplication].keyWindow;

    
    CGFloat SCREEN_WIDTH = [UIScreen mainScreen].bounds.size.width;
    CGFloat SCREEN_HEIGHT = [UIScreen mainScreen].bounds.size.height;
    
    UILabel *label = [[UILabel alloc]init];
    //    boundingRectWithSize:options:attributes:context
    CGSize LabelSize = [message boundingRectWithSize:CGSizeMake(290, 9000) withFont:16];
    
    dispatch_async(dispatch_get_main_queue(), ^{
        
        self.loadLabel.frame = CGRectMake(10, 5, LabelSize.width, LabelSize.height);
        self.loadView.frame = CGRectMake((SCREEN_WIDTH - LabelSize.width - 20)/2, SCREEN_HEIGHT - 100, LabelSize.width+20, LabelSize.height+10);
        self.loadLabel.text = message;
        [window addSubview:self.loadView];
    });
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        
        int i = 3;
        while (isLoading) {
            
            NSString *meText = [message substringToIndex:message.length - (3 - i)];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                label.text = meText;
            });
            
            [NSThread sleepForTimeInterval:0.5f];
            
            i++;
            
            if (i == 4) {
                i = 0;
            }
        }
        
    });
}

- (void)hideLoadingMessage{
    isLoading = NO;
    
    [UIView animateWithDuration:1.0 animations:^{
        self.loadView.alpha = 0;
    } completion:^(BOOL finished) {
        dispatch_async(dispatch_get_main_queue(), ^{
            
            [self.loadView removeFromSuperview];
        });
    }];
}

@end
